from PySide6.QtWidgets import QApplication, QMessageBox
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QFileDialog

# 在QApplication之前先实例化
uiLoader = QUiLoader()

class Stats:

    def __init__(self):
        # 再加载界面
        self.ui = uiLoader.load('ui/ui_button_and_label.ui')
        self.ui.pushButton.clicked.connect(self.demo_1)
        self.ui.pushButton.setText('打开文件夹')

        self.ui.pushButton_2.clicked.connect(self.demo_2)
        self.ui.pushButton_2.setText('打开文件')

        self.ui.pushButton_3.clicked.connect(self.demo_3)
        self.ui.pushButton_3.setText('打开多个文件')


        self.ui.pushButton_4.clicked.connect(self.demo_4)
        self.ui.pushButton_4.setText('保存到')

    def demo_1(self):
        # 选择目录
        filePath = QFileDialog.getExistingDirectory(self.ui, "选择存储路径")
        self.ui.label.setText(f'选择:{filePath}')

    def demo_2(self):
        # 选择目录
        filePath, _ = QFileDialog.getOpenFileName(
            self.ui,  # 父窗口对象
            "选择你要上传的图片",  # 标题
            r"d:\\data",  # 起始目录
            "图片类型 (*.png *.jpg *.bmp)"  # 选择类型过滤项，过滤内容在括号中 返回到 _ 中
        )
        self.ui.label.setText(f'选择:{filePath}')

    def demo_3(self):
        # 选择多文件
        filePaths, _ = QFileDialog.getOpenFileNames(
            self.ui,  # 父窗口对象
            "选择你要上传的图片",  # 标题
            r"d:\\data",  # 起始目录
            "图片类型 (*.png *.jpg *.bmp)"  # 选择类型过滤项，过滤内容在括号中 返回到 _ 中
        )
        self.ui.label.setText(f'选择:{filePaths}')

    def demo_4(self):
        # 选择多文件
        filePath, _ = QFileDialog.getSaveFileName(
            self.ui,  # 父窗口对象
            "保存文件",  # 标题
            r"d:\\data",  # 起始目录
            "json类型 (*.json)"  # 选择类型过滤项，过滤内容在括号中
        )
        self.ui.label.setText(f'选择:{filePath}')




app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec() # PySide6 是 exec 而不是 exec_